/**
 1.any 和 unknown 傻傻分不清楚？

 笔记：
    any:我不在乎它的类型
    unknown:我不知道它的类型，可以理解为类型安全的any类型

    Typesctip 允许我们对any类型进行任何操作，因为不会事先进行类型检查；
    反之unknown外号类型安全的any类型，会事先进行类型检查。

    unknown类型的变量只能复制给any类型和unknown类型本身

    1.你可以把任何值赋给 any 类型的变量，并对该变量执行任何操作；
    2.你可以把任何值赋给 unknown 类型的变量，但你必须进行类型检查或类型断言才能对变量进行操作。
 */

function invokeCallback(callback: any) {
  try {
    // Object is of type 'unknown'.(2571)
    callback(); // Error
  } catch (err) {
    console.error(err);
  }
}
invokeCallback(1);

function invokeCallback2(callback: unknown) {
  try {
    //   可以加上类型判断，缩减callback范围
    if (typeof callback == "function") {
      callback(); // Error
    }
  } catch (err) {
    console.error(err);
  }
}
invokeCallback2(1);

/********************************* */

let value: unknown;
let value1: unknown;

value1 = value;
